package com.demo.blog;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.druid.util.StringUtils;
import com.demo.common.model.Blog;
import com.jfinal.kit.Kv;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;

/**
 * 本 demo 仅表达最为粗浅的 jfinal 用法，更为有价值的实用的企业级用法
 * 详见 JFinal 俱乐部: http://jfinal.com/club
 * 
 * BlogService
 * 所有 sql 与业务逻辑写在 Service 中，不要放在 Model 中，更不
 * 要放在 Controller 中，养成好习惯，有利于大型项目的开发与维护
 */
public class BlogService {
	
	/**
	 * 所有的 dao 对象也放在 Service 中，并且声明为 private，避免 sql 满天飞
	 * sql 只放在业务层，或者放在外部 sql 模板，用模板引擎管理：
	 * 			http://www.jfinal.com/doc/5-13
	 */
	private Blog dao = new Blog().dao();
	
	public Page<Blog> paginate(int pageNumber, int pageSize) {
	    return paginate(pageNumber,pageSize,null);
	}
	
	public Page<Blog> paginate(int pageNumber, int pageSize,Kv kv) {
	    StringBuffer sb = new StringBuffer("from blog t where 1=1 ");
	    List<Object> param = new ArrayList<Object>();
	    if(kv!=null){
	        String title = kv.getStr("title");
	        if(!StringUtils.isEmpty(title)){
	            sb.append(" and t.title=?");
	            param.add(title);
	        }
	    }
	    sb.append("order by id asc");
		return dao.paginate(pageNumber, pageSize, "select *", sb.toString(),param.toArray());
	}
	
	public Blog findById(String id) {
		return dao.findById(id);
	}
	
	public void deleteById(String id) {
		dao.deleteById(id);
	}
	
	public int count(){
	    Integer count = Db.queryInt("select count(*) from blog");
	    if(count==null){
	        count = 0;
	    }
	    return count.intValue();
	}
}
